1. Field of the Invention
This invention relates to a programmed computer system and process which monitors, evaluates, and documents revisions to computer code.
2. Background Information
The complexity of large software systems makes it very difficult to assure that the system performs in accordance with specifications. In addition, it is often difficult to determine all the effects that revisions to a portion of the code will have throughout the system. Furthermore, it is important to document all revisions so that the state of the system can be accurately determined. While such proving and documentation of the software are important in any large software system, they are particularly important in large computer controlled process control systems, and most especially, in safety-related systems of a nuclear power plant.
Many processes in a power plant are monitored in the plant main control room using signals sent from instrumentation located throughout the plant. Although many operations in the control room are manual the remaining majority are automatically performed through circuitry involving programmed microprocessors. The programs used often control safety-related systems and are critical to safe plant operation. Consequently, their accuracy and integrity are important.
Generally these programs are complex and contain a great deal of branching and retrieval of subroutines. During the development of these programs, it is not unusual to revise a portion of the program. A revision in one portion of the program may critically affect another portion of the same program, or impact the operation of one or more other programs in the software system, and therefore with each revision the entire software system must be re-examined for integrity. Because of the complexity of such software systems, this becomes a major task that is very time consuming and prone to error.
Typically, the software is produced by a design team which generates code to perform specified functions. The code is verified and validated by a separate team. Verification is the checking of the individual pieces of software to assure that they meet the software design specifications and supporting documentation. This has been carried out by devising tests which exercise the various loops in a piece of software. For very complex programs it can be difficult to assure that all possible paths in the program have been tested. Commonly assigned patent application Ser. No. 35,802 (now U.S. Pat. No. 4,819,233) filed on Apr. 8, 1987 entitled Verification of Computer Software discloses a machine implemented method and system for verifying software which automatically tests all possible branching within a piece of software. This form of verification is carried out using a general purpose digital computer.
Validation involves analyzing overall system performance to assure that it satisfies preestablished functional requirements. Validation tests are carried out with production software in the actual hardware to assure that the actual system will meet the functional requirements.
In addition to the verification and validation requirements, government regulations require strict and detailed documentation for all programs that control safety-related systems in a nuclear power plant. Typically, there are about 1200 programs in such a power plant and this task of testing and documentation becomes formidable. Hence there remains a need for a system and method to analyze and document computer program revisions, identify affected portions of the program, and confirm that the impact of any revision has been addressed to insure that the integrity of the software system is maintained.